﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyLibary.DAL;
namespace MyLibary.BIZ
{
    public class BIZ_Kho
    {
        #region Field
        public string MaSanPham { get; set; }
        public DateTime Ngay { get; set; }
        public int SoLuongTon { get; set; }
        public BIZ_SanPham SanPham
        {
            get { return DAL_SanPham.GetById(this.MaSanPham); }
        }
        #endregion
        #region Constructor
        public BIZ_Kho(string MaSanPham, DateTime Ngay, int SoLuong)
        {
            this.MaSanPham = MaSanPham;
            this.Ngay = Ngay;
            this.SoLuongTon = SoLuong;
        }
        #endregion
        #region Methold
        /// <summary>
        /// lấy toàn bộ dữ liệu trong table kho
        /// </summary>
        /// <returns></returns>
        public static List<BIZ_Kho> GetAll()
        {
            return DAL_Kho.GetAll();
        }
        public static BIZ_Kho getBySanPham(string MaSanPham, DateTime Ngay)
        {
            return DAL_Kho.getBySanPham(MaSanPham, Ngay);
        }
        /// <summary>
        /// thêm 1 record vào table kho
        /// </summary>
        /// <returns></returns>
        public bool Add()
        {
            return DAL_Kho.Insert(this);
        }
        /// <summary>
        /// xóa 1 record kho
        /// </summary>
        /// <returns></returns>
        public bool Delete()
        {
            return DAL_Kho.Deleted(this);
        }
        /// <summary>
        /// cập nhật một record kho
        /// </summary>
        /// <returns></returns>
        public bool Update()
        {
            return DAL_Kho.Update(this);
        }
        /// lấy số lượng tồn kho của ngày cụ thể
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static int GetSoLuongTon(string MaSanPham,DateTime date)
        {
            return DAL_Kho.GetSoLuongTon(MaSanPham, date);
        }
        #endregion
    }
    class IEQualityCompareKho : IEqualityComparer<BIZ_Kho>
    {
        #region IEQualityCompareKho
        public bool Equals(BIZ_Kho x, BIZ_Kho y)
        {
            bool f = x.Ngay.Year == y.Ngay.Year && x.Ngay.Month == y.Ngay.Month && x.Ngay.Day == y.Ngay.Day;
            return x.MaSanPham == y.MaSanPham && f;
        }
        public int GetHashCode(BIZ_Kho Object) { return Object.GetHashCode(); }
        #endregion
    }
}
